package com.xnfh.common

import android.R
import android.app.Application
import android.content.Context
import androidx.multidex.MultiDex
import com.scwang.smart.refresh.header.ClassicsHeader
import com.scwang.smart.refresh.layout.SmartRefreshLayout
import com.xnfh.common.task.*
import com.xnfh.framework.toast.TipsToast
import com.xnfh.stater.dispatcher.TaskDispatcher


/**
 * @Description:
 * @Author: ziheng
 * @CreateDate: 2023/11/6 18:33
 * @UpdateUser: ziheng
 * @UpdateDate: 2023/11/6 18:33
 * @UpdateRemark: 更新说明
 */
class MyApplication : Application() {

    override fun attachBaseContext(base: Context?) {
        super.attachBaseContext(base)
        MultiDex.install(base)
    }

    override fun onCreate() {
        super.onCreate()

        TipsToast.init(this)
        //1.启动器：TaskDispatcher初始化
        TaskDispatcher.init(this)
        //2.创建dispatcher实例
        val dispatcher: TaskDispatcher = TaskDispatcher.createInstance()
        //3.添加任务并且启动任务
        dispatcher.addTask(InitSumHelperTask(this))
            .addTask(InitMmkvTask())
            .addTask(InitRefreshLayoutTask())
            .addTask(InitArouterTask())
            .addTask(InitAutoSizeTask())
            .addTask(InitX5WebviewTask())
            .addTask(handleSSLHandshakeTask())
            .start()

        //4.等待，需要等待的方法执行完才可以往下执行
        dispatcher.await()
        //全局设置默认的 Header
        SmartRefreshLayout.setDefaultRefreshHeaderCreator { context, layout -> //开始设置全局的基本参数（这里设置的属性只跟下面的MaterialHeader绑定，其他Header不会生效，能覆盖DefaultRefreshInitializer的属性和Xml设置的属性）
            ClassicsHeader(context)
        }

    }

}